#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "systemsettingwidget.h"
#include "workermanagewidget.h"
#include "attendanceregisterwidget.h"
#include "homeownermanagewidget.h"
#include "leavewidget.h"
#include "monthlyattendancewidget.h"
#include "leaveapprovedwidget.h"
#include "carmanagewidget.h"
#include "parkingmanagebyownerwidget.h"
#include "paymanagerwidget.h"
#include "repairmanagewidget.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    initWindow();
}

MainWindow::~MainWindow()
{
    delete ui;
}

/**
 * @brief 设置LoginWidget的引用
 * @param w
 */
void MainWindow::setLoginWidgetRefer(LoginWidget *w)
{
    this->loginWidget = w;
}

/**
 * @brief 初始化窗体
 */
void MainWindow::initWindow()
{
    this->setWindowTitle("智慧小区系统-主界面");
    ui->label_curUserName->setText(LoginWidget::userName);
    //根据权限不同，显示不同模块
    //1. 管理员
    if (LoginWidget::userRole == 1)
    {
        ui->btn_attendanceRegister->hide(); //出勤登记模块
        ui->btn_homeownerManage->hide(); //业主管理模块
        ui->btn_leave->hide(); //请销假模块
        ui->btn_carManage->hide(); //车位管理模块
        ui->btn_payManage->hide(); //缴费管理
        ui->btn_maintainManage->hide(); //维修管理
        ui->btn_workerManage->move(180,180);
        ui->btn_leaveApproval->move(180+150, 180);
        ui->btn_attendance->move(180+150*2, 180);
        ui->btn_systemSetting->move(180+150*3, 180);
        ui->frame_role->setStyleSheet("border-image: url(:/image/images/admin.png);");

    }
    //2. 物业工作人员
    else if (LoginWidget::userRole == 2)
    {
        ui->btn_workerManage->hide(); //物业工作人员管理模块
        ui->btn_systemSetting->hide(); //系统设置模块
        ui->btn_leaveApproval->hide(); //请假审批模块
        ui->btn_leave->move(180, 150);
        ui->btn_attendance->move(180+140, 150);
        ui->btn_attendanceRegister->move(180+140*2, 150);
        ui->btn_homeownerManage->move(180+140*3, 150);
        ui->btn_carManage->move(230, 150+140);
        ui->btn_maintainManage->move(230+140, 150+140);
        ui->btn_payManage->move(230+140*2, 150+140);
        ui->frame_role->setStyleSheet("border-image: url(:/image/images/worker.png);");
    }
    //3. 业主
    else if (LoginWidget::userRole == 3)
    {
        ui->btn_workerManage->hide(); //物业工作人员管理模块
        ui->btn_systemSetting->hide(); //系统设置模块
        ui->btn_leaveApproval->hide(); //请假审批模块
        ui->btn_attendanceRegister->hide(); //出勤登记模块
        ui->btn_homeownerManage->hide(); //业主管理模块
        ui->btn_leave->hide(); //请销假模块
        ui->btn_attendance->hide(); //月度出勤模块
        ui->btn_carManage->move(240, 180);
        ui->btn_payManage->move(240+150, 180);
        ui->btn_maintainManage->move(240+150*2, 180);
        ui->frame_role->setStyleSheet("border-image: url(:/image/images/homeowner.png);");
    }
}

/**
 * @brief 物业人员管理模块
 * 使用者：物业管理员 Role=1
 */
void MainWindow::on_btn_workerManage_clicked()
{
    WorkerManageWidget *widget = new WorkerManageWidget();
    widget->show();
}

/**
 * @brief 系统设置模块
 * 使用者：物业管理员 Role=1
 */
void MainWindow::on_btn_systemSetting_clicked()
{
    SystemSettingWidget *widget = new SystemSettingWidget();
    widget->show();
}

/**
 * @brief 请假审批模块
 * 使用者：物业管理员 Role=1
 */
void MainWindow::on_btn_leaveApproval_clicked()
{
    LeaveApprovedWidget *widget = new LeaveApprovedWidget();
    widget->show();
}

/**
 * @brief 月度出勤模块
 * 使用者：物业管理员 Role=1 | 物业工作人员 Role=2
 */
void MainWindow::on_btn_attendance_clicked()
{
    MonthlyAttendanceWidget *widget = new MonthlyAttendanceWidget();
    widget->show();
}

/**
 * @brief 出勤登记模块
 * 使用者：物业工作人员 Role=2
 */
void MainWindow::on_btn_attendanceRegister_clicked()
{
    AttendanceRegisterWidget *widget = new AttendanceRegisterWidget();
    widget->show();
}

/**
 * @brief 业主管理模块
 * 使用者：物业工作人员 Role=2
 */
void MainWindow::on_btn_homeownerManage_clicked()
{
    HomeownerManageWidget *widget = new HomeownerManageWidget();
    widget->show();
}

/**
 * @brief 请销假模块
 * 使用者：物业工作人员 Role=2
 */
void MainWindow::on_btn_leave_clicked()
{
    LeaveWidget *widget = new LeaveWidget();
    widget->show();
}

/**
 * @brief 车位管理模块
 * 使用者：物业工作人员 Role=2 | 业主 Role=3
 */
void MainWindow::on_btn_carManage_clicked()
{
    if (LoginWidget::userRole == 2)
    {
        carManageWidget *widget = new carManageWidget();
        widget->show();
    }
    else if(LoginWidget::userRole == 3)
    {
        ParkingManageByOwnerWidget *widget = new ParkingManageByOwnerWidget();
        widget->show();
    }

}

/**
 * @brief 退出登录
 */
void MainWindow::on_btn_exit_clicked()
{
    this->hide();
    this->loginWidget->show();
}

/**
 * @brief 缴费管理
 * 使用者：物业工作人员 Role=2 | 业主 Role=3
 */
void MainWindow::on_btn_payManage_clicked()
{
    payManagerWidget *widget = new payManagerWidget();
    widget->show();
}

/**
 * @brief 维修管理
 * 使用者：物业工作人员 Role=2 | 业主 Role=3
 */
void MainWindow::on_btn_maintainManage_clicked()
{
    RepairManageWidget *widget = new RepairManageWidget();
    widget->show();
}
